/*
 *   Copyright (C) Key Bridge Global LLC and/or its affiliates.
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.keybridgeglobal.wsif;

import com.keybridgeglobal.wsif.enumerated.EnumWsifScheduleClassification;
import com.keybridgeglobal.wsif.enumerated.EnumWsifScheduleTransparency;
import java.util.Date;
import javax.xml.bind.annotation.*;

/**
 * <p>Java class for schedule complex type.
 * <p/>
 * <p>The following schema fragment specifies the expected content contained
 * within this class.
 * <p/>
 * <
 * pre>
 * &lt;complexType name="schedule">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="iCalendar" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *       &lt;/sequence>
 *       &lt;attribute name="dtstart" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
 *       &lt;attribute name="dtend" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
 *       &lt;attribute name="rrule" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="timeZone" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="uid" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="categories" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="created" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
 *       &lt;attribute name="classification" type="{}enumWsifScheduleClassification" />
 *       &lt;attribute name="description" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="organizer" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="priority" type="{http://www.w3.org/2001/XMLSchema}int" />
 *       &lt;attribute name="summary" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="transparency" type="{}enumWsifScheduleTransparency" />
 *       &lt;attribute name="allDayEvent" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *       &lt;attribute name="dateExpiration" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * <p/>
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "schedule", propOrder = {
  "iCalendar"
})
@XmlRootElement
public class Schedule {

  protected String iCalendar;
  @XmlAttribute(name = "dtstart", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dtstart;
  @XmlAttribute(name = "dtend", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date dtend;
  @XmlAttribute(name = "rrule", required = true)
  protected String rrule;
  @XmlAttribute(name = "timeZone", required = true)
  protected String timeZone;
  @XmlAttribute(name = "uid", required = true)
  protected String uid;
  @XmlAttribute(name = "categories")
  protected String categories;
  @XmlAttribute(name = "created", required = true)
  @XmlSchemaType(name = "dateTime")
  protected Date created;
  @XmlAttribute(name = "classification")
  protected EnumWsifScheduleClassification classification;
  @XmlAttribute(name = "description")
  protected String description;
  @XmlAttribute(name = "organizer")
  protected String organizer;
  @XmlAttribute(name = "priority")
  protected Integer priority;
  @XmlAttribute(name = "summary")
  protected String summary;
  @XmlAttribute(name = "transparency")
  protected EnumWsifScheduleTransparency transparency;
  @XmlAttribute(name = "allDayEvent", required = true)
  protected boolean allDayEvent;
  @XmlAttribute(name = "dateExpiration")
  @XmlSchemaType(name = "dateTime")
  protected Date dateExpiration;

  /**
   * Gets the value of the iCalendar property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getICalendar() {
    return iCalendar;
  }

  /**
   * Sets the value of the iCalendar property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setICalendar(String value) {
    this.iCalendar = value;
  }

  /**
   * Gets the value of the dtstart property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDtstart() {
    return dtstart;
  }

  /**
   * Sets the value of the dtstart property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDtstart(Date value) {
    this.dtstart = value;
  }

  /**
   * Gets the value of the dtend property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDtend() {
    return dtend;
  }

  /**
   * Sets the value of the dtend property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDtend(Date value) {
    this.dtend = value;
  }

  /**
   * Gets the value of the rrule property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getRrule() {
    return rrule;
  }

  /**
   * Sets the value of the rrule property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setRrule(String value) {
    this.rrule = value;
  }

  /**
   * Gets the value of the timeZone property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getTimeZone() {
    return timeZone;
  }

  /**
   * Sets the value of the timeZone property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setTimeZone(String value) {
    this.timeZone = value;
  }

  /**
   * Gets the value of the uid property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getUid() {
    return uid;
  }

  /**
   * Sets the value of the uid property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setUid(String value) {
    this.uid = value;
  }

  /**
   * Gets the value of the categories property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getCategories() {
    return categories;
  }

  /**
   * Sets the value of the categories property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setCategories(String value) {
    this.categories = value;
  }

  /**
   * Gets the value of the created property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getCreated() {
    return created;
  }

  /**
   * Sets the value of the created property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setCreated(Date value) {
    this.created = value;
  }

  /**
   * Gets the value of the classification property.
   * <p/>
   * @return possible object is {@link EnumWsifScheduleClassification }
   *
   */
  public EnumWsifScheduleClassification getClassification() {
    return classification;
  }

  /**
   * Sets the value of the classification property.
   * <p/>
   * @param value allowed object is {@link EnumWsifScheduleClassification }
   *
   */
  public void setClassification(EnumWsifScheduleClassification value) {
    this.classification = value;
  }

  /**
   * Gets the value of the description property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getDescription() {
    return description;
  }

  /**
   * Sets the value of the description property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setDescription(String value) {
    this.description = value;
  }

  /**
   * Gets the value of the organizer property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getOrganizer() {
    return organizer;
  }

  /**
   * Sets the value of the organizer property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setOrganizer(String value) {
    this.organizer = value;
  }

  /**
   * Gets the value of the priority property.
   * <p/>
   * @return possible object is {@link Integer }
   *
   */
  public Integer getPriority() {
    return priority;
  }

  /**
   * Sets the value of the priority property.
   * <p/>
   * @param value allowed object is {@link Integer }
   *
   */
  public void setPriority(Integer value) {
    this.priority = value;
  }

  /**
   * Gets the value of the summary property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getSummary() {
    return summary;
  }

  /**
   * Sets the value of the summary property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setSummary(String value) {
    this.summary = value;
  }

  /**
   * Gets the value of the transparency property.
   * <p/>
   * @return possible object is {@link EnumWsifScheduleTransparency }
   *
   */
  public EnumWsifScheduleTransparency getTransparency() {
    return transparency;
  }

  /**
   * Sets the value of the transparency property.
   * <p/>
   * @param value allowed object is {@link EnumWsifScheduleTransparency }
   *
   */
  public void setTransparency(EnumWsifScheduleTransparency value) {
    this.transparency = value;
  }

  /**
   * Gets the value of the allDayEvent property.
   * <p/>
   */
  public boolean isAllDayEvent() {
    return allDayEvent;
  }

  /**
   * Sets the value of the allDayEvent property.
   * <p/>
   */
  public void setAllDayEvent(boolean value) {
    this.allDayEvent = value;
  }

  /**
   * Gets the value of the dateExpiration property.
   * <p/>
   * @return possible object is {@link Date }
   *
   */
  public Date getDateExpiration() {
    return dateExpiration;
  }

  /**
   * Sets the value of the dateExpiration property.
   * <p/>
   * @param value allowed object is {@link Date }
   *
   */
  public void setDateExpiration(Date value) {
    this.dateExpiration = value;
  }
}
